The density of data stored in nonvolatile memory modules has dramatically increased during the last decade. This increase in density may cause a reduction in storage reliability and an increase in storage errors. To compensate for the increase in storage errors, memory modules may use error correcting codes (ECC) with increased complexity. However, such an increase in the complexity of the ECC codes may degrade the efficiency and throughput of retrieving data from the memory modules.
Furthermore, current system standards require significantly higher reliability in data retrieved from nonvolatile memory modules, such as flash memory, than from other data communication channels, such as telecommunication transmissions. In telecommunication networks, when an encoding error occurs in a signal, there are protocols to correct the error other than in-code error correction, such as, retransmission protocols that re-send signals. However, since original source data is generally inaccessible to a device accessing flash memory, retransmission may be impractical. Since the flash memory may rely solely on in-code error correction, such as ECC, system standards may allow a significantly smaller probability of error, e.g., on the order of 1015 in flash memory output streams, than the allowable probability of error, e.g., on the order of 10−2 or 10−3, in communication transmissions.
There is a growing need in the art for efficient systems and methods for encoding and decoding that protect the information stored in memory modules from error.